package JAVACORE_TRAINING.OOPS_CONCEPTS.ARRAY_AND_COLLECTIONS.STATIC_ARRAYS.EXCERCISES.EX01;

public class Models {
    /**
     * 
     * @param myArray : Biến mảng chứa các giá trị người dùng nhập vào
     * @param shOpt
     * + shOpt = 0: Chọn ra các giá trị >= 5
     * + shOpt = 1: Chọn ra các giá trị < 5
     * @return
     */
    public double[] FindeElement(double[] dArr, short shOpt){
        //1. Khai báo khởi tạo biến mảng trung gian
        double[] dTemps = new double[dArr.length];
                
        //2. Kiểm tra sự lựa chọn của người dùng trên app
        /*
         * + shOpt = 0: >= 5
         * + shOpt = 1: < 5      * 
         * */
        int iCount = 0;
        for(int i=0;i<dArr.length;i++){
            if(shOpt == 0){
                if(dArr[i] >= 5){
                    dTemps[iCount] = dArr[i];
                    iCount++;
                }               
            }
            else{
                if(dArr[i] < 5){
                    dTemps[iCount] = dArr[i];
                    iCount++;
                }               
            }
        }
        
        //3. Khởi tạo biến mảng
        double[] dValue = new double[iCount];
        
        //4. Sao chép toàn bộ dữ liệu thỏa mãn từ mảng temps --> myValue
        /*
         * System.arraycopy(1,2,3,4,5);
         * + (1): Dữ liệu mảng nguồn đâu?
         * + (2): Lấy dữ liệu từ chỉ số thứ mấy trong mảng nguồn?
         * + (3): Mảng chứa dữ liệu đích đâu?
         * + (4): Bắt đầu đưa vào từ chỉ số thứ bao nhiêu trong mảng đích?
         * + (5): Lấy bao nhiêu giá trị trong mảng nguồn ra?
         * */
        //C1: 
        System.arraycopy(dTemps, 0, dValue, 0, iCount);            
        //C2:
        /*for(int j=0;j<temps.length;j++){
            if(j<iCount){
                myValue[j] = temps[j];
            }
        }*/        
        //5. Trả biến mảng về cho Applications
        return dValue;
    }
}
